(*# call(o_a_copy => off) *)
(*%T _fcall *)
(*# call(seg_name => QCxm) *)
(*%E *)
(*%F _fcall *)
(*# call(seg_name => null) *)
(*%E *)
(*# module(implementation=>on) *)
(*# data(seg_name => null) *)
DEFINITION MODULE QCxmzero;

                     (* This JPI Modula-2 module is part of *)

                      (* QC -- a communications program *)
                             (* by Carl Neiburger *)
                              (* 169 N. 25th St.*)
                          (* San Jose, Calif. 95116 *)

                         (* CompuServe No. 72336,2257 *)

FROM QCdisp IMPORT Telink, YModem, ProtoType;
FROM NFIO IMPORT PathTail;

CONST MaxBufSize = 1032;

TYPE

    TelinkBlockType = RECORD
         FileLength     : LONGCARD;
         FileTime       : LONGCARD; (* MSDOS file format *)
         FileName       : ARRAY [0..15] OF CHAR; (* ASCIIZ *)
         Version        : SHORTCARD; (* = 0 *)
         ProgramName    : ARRAY [0..15] OF CHAR; (* ASCIIZ *)
    END;

    BPtr = POINTER TO ARRAY [1..MaxBufSize] OF SHORTCARD;

CreateBlockProc = PROCEDURE(ARRAY OF CHAR, VAR PathTail, VAR BPtr): CARDINAL;
    (* Result zero = failure; else, result = minimum length *)

InterpretBlockProc = PROCEDURE (BPtr, VAR TelinkBlockType);

ProtoSet  = SET OF ProtoType;

CONST
    ZeroBlockProtos = ProtoSet{YModem, Telink};

VAR
    CreateBlock : ARRAY [YModem .. ZModem] OF CreateBlockProc;
    InterpretBlock : ARRAY [YModem .. ZModem] OF InterpretBlockProc;

PROCEDURE BasicBlock(VAR b: BPtr);

END QCxmzero.